package net.yla.smartbus.module.ba.log.serice.impl;

import com.github.pagehelper.PageHelper;
import com.vip.vjtools.vjkit.collection.ListUtil;
import net.yla.smartbus.core.base.BaseService;
import net.yla.smartbus.core.base.PageBean;
import net.yla.smartbus.module.ba.log.dto.UserLogDTO;
import net.yla.smartbus.module.ba.log.entity.UserLogDO;
import net.yla.smartbus.module.ba.log.form.UserLogForm;
import net.yla.smartbus.module.ba.log.mapper.UserLogDOMapper;
import net.yla.smartbus.module.ba.log.query.UserLogQuery;
import net.yla.smartbus.module.ba.log.serice.UserLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 *@author:LiuJie
 *@date:2021/6/16
 *@description:用户操作日志
 */
@Service
public class UserLogServiceImpl extends BaseService implements UserLogService {


    @Autowired
    private UserLogDOMapper userLogDOMapper;

    /**
     * 新增用户操作
     * @param form
     * @return
     */
    @Override
    public int addForm(UserLogForm form) {
        UserLogDO record = new UserLogDO();
        record.setAdminId(form.getAdminId());
        record.setUrl(form.getIp());
        record.setName(form.getName());
        record.setOp(form.getOp());
        record.setDescription(form.getDescription());
        record.setFlags(1);
        int i = userLogDOMapper.insertSelective(record);
        return 1;
    }

    /**
     * 查询用户操作日志
     * @param query
     * @return
     */
    @Override
    public PageBean<UserLogDTO> listByQuery(UserLogQuery query) {
        PageHelper.startPage(query.getPageNum(),query.getPageSize(),"logId DESC");
        List<UserLogDO> list = userLogDOMapper.listByQuery(query);
        if (ListUtil.isEmpty(list)){
            return new PageBean<>(ListUtil.emptyList(),query.getPageNum(),query.getPageSize(),0);
        }
        List<UserLogDTO> dtoList = new ArrayList<>(list.size());
        int count = userLogDOMapper.countByQuery(query);
        for (UserLogDO userLogDO : list){
            UserLogDTO dto = new UserLogDTO();
            dto.setId(userLogDO.getLogId());
            dto.setIp(userLogDO.getUrl());
            dto.setOp(userLogDO.getDescription());
            dto.setUser(userLogDOMapper.selectLoginId(userLogDO.getAdminId()));
            if (userLogDO.getOp().equals(1)){
                dto.setType("新增");
            }else if (userLogDO.getOp().equals(2)){
                dto.setType("修改");
            }else if (userLogDO.getOp().equals(3)){
                dto.setType("删除");
            }else if (userLogDO.getOp().equals(4)){
                dto.setType("查询");
            }
            dto.setDate(userLogDO.getCreationTime());
            dtoList.add(dto);
        }
        return new PageBean<>(dtoList,query.getPageNum(),query.getPageSize(),count);
    }
}
